module beeper
(
    input               clk_in,     //系统时钟
    input               rst_n_in,   //系统复位，低有效
    input               chose_down, //下一首
    input               tone_en,   //蜂鸣器使能

    output  reg [2:0]   flag,       //确定当前播放歌曲
    output  reg         piano_out   //蜂鸣器控制输出
);

reg [4:0] note [609:0];//音符表
reg [4:0] beat [609:0];//节拍表，音符表和节拍表一一对应
reg [4:0] tone;     //蜂鸣器音节控制 
reg [4:0] tcon;     //蜂鸣器节拍控制
reg [9:0] num;      //用于控制节拍和音频

reg [15:0] time_end;//用于控制频率 
reg [27:0] time_delay;//用于控制时间
reg [25:0] cnt_delay;
reg [17:0] time_cnt;

always@(tone) begin
    case(tone)
        5'd1:   time_end =  16'd22935;  //L1,
        5'd2:   time_end =  16'd20428;  //L2,
        5'd3:   time_end =  16'd18203;  //L3,
        5'd4:   time_end =  16'd17181;  //L4,
        5'd5:   time_end =  16'd15305;  //L5,
        5'd6:   time_end =  16'd13635;  //L6,
        5'd7:   time_end =  16'd12147;  //L7,
        5'd8:   time_end =  16'd11464;  //M1,
        5'd9:   time_end =  16'd10215;  //M2,
        5'd10:  time_end =  16'd9100;   //M3,
        5'd11:  time_end =  16'd8589;   //M4,
        5'd12:  time_end =  16'd7652;   //M5,
        5'd13:  time_end =  16'd6817;   //M6,
        5'd14:  time_end =  16'd6073;   //M7,
        5'd15:  time_end =  16'd5740;   //H1,
        5'd16:  time_end =  16'd5107;   //H2,
        5'd17:  time_end =  16'd4549;   //H3,
        5'd18:  time_end =  16'd4294;   //H4,
        5'd19:  time_end =  16'd3825;   //H5,
        5'd20:  time_end =  16'd3408;   //H6,
        5'd21:  time_end =  16'd3036;   //H7,
        default:time_end =  16'd65535;  
    endcase
end

always@(tcon or flag) begin
		if(flag == 3'd1) begin
		case(tcon)//漠河舞厅，一小节四拍，拍速为80拍/分钟
			5'd 1:  time_delay =    28'd2250000;//四分之一拍
			5'd 2:  time_delay =    28'd4500000;//半拍
			5'd 3:  time_delay =    28'd6750000;//四分之三拍
			5'd 4:  time_delay =    28'd9_000_000;//一拍
			5'd 6:  time_delay =    28'd13500000;//一拍半
			5'd 8:  time_delay =    28'd18000000;//两拍
			5'd12:  time_delay =    28'd27000000;//三拍
			5'd16:  time_delay =    28'd36000000;//四拍
			5'd24:  time_delay =    28'd72000000;//八拍
			default:time_delay =    28'd0;  
		endcase
	end

	else if(flag == 3'd2) begin
		case(tcon)//漂洋过海来看你，一小节四拍，拍速为60拍/分钟
			5'd 1:  time_delay =    28'd3_000_000;//四分之一拍
			5'd 2:  time_delay =    28'd6_000_000;//半拍
			5'd 3:  time_delay =    28'd9_000_000;//四分之三拍
			5'd 4:  time_delay =    28'd12_000_000;//一拍
			5'd 6:  time_delay =    28'd18_000_000;//一拍半
			5'd 8:  time_delay =    28'd24_000_000;//两拍
			5'd12:  time_delay =    28'd36_000_000;//三拍
			5'd16:  time_delay =    28'd48_000_000;//四拍
			5'd24:  time_delay =    28'd96_000_000;//八拍
			default:time_delay =    28'd0;  
		endcase
	end

	else if(flag == 3'd3) begin
		case(tcon)//青花瓷，一小节四拍，拍速为80拍/分钟
			5'd 1:  time_delay =    28'd2250000;//四分之一拍
			5'd 2:  time_delay =    28'd4500000;//半拍
			5'd 3:  time_delay =    28'd6750000;//四分之三拍
			5'd 4:  time_delay =    28'd9_000_000;//一拍
			5'd 6:  time_delay =    28'd13500000;//一拍半
			5'd 8:  time_delay =    28'd18000000;//两拍
			5'd12:  time_delay =    28'd27000000;//三拍
			5'd16:  time_delay =    28'd36000000;//四拍
			5'd24:  time_delay =    28'd72000000;//八拍
			default:time_delay =    28'd0;  
		endcase
	end
    
end

//当蜂鸣器使能时，计数器按照计数终值（分频系数）计数
always@(posedge clk_in or negedge rst_n_in) begin
    if(rst_n_in == 1'b0) begin
        time_cnt <= 1'b0;
    end else if(tone_en == 1'b0) begin
        time_cnt <= 1'b0;
    end else if(time_cnt>=time_end) begin //计数清零
        time_cnt <= 1'b0;
    end else begin
        time_cnt <= time_cnt + 1'b1;
    end
end

//根据计数器的周期，翻转蜂鸣器控制信号
always@(posedge clk_in or negedge rst_n_in) begin
    if(rst_n_in == 1'b0) begin
        piano_out <= 1'b0;
    end else if(tone==5'd0) begin //没有音节时，不让蜂鸣器出声
        piano_out <= 1'b0;
    end else if(time_cnt==time_end) begin
        piano_out <= ~piano_out;    //蜂鸣器控制输出翻转，两次翻转为1Hz
    end else begin
        piano_out <= piano_out;
    end
end

always@(posedge clk_in or negedge rst_n_in) begin//音符和节拍控制
    if(rst_n_in == 1'b0) begin //复位
        tone <= 1'b0;
        tcon <= 1'b0;
    end else if(tone_en == 1'b0) begin
        tone <= tone;
        tcon <= tcon;
    end else begin
        tone <= note[num];//音节
        tcon <= beat[num]; //节拍就是分配的时间
    end
end 

always@(posedge clk_in or negedge rst_n_in) begin   //时间控制,上一首或者下一首切换歌曲(手动或者自动)
    if(rst_n_in == 1'b0) begin //复位
        cnt_delay <= 1'b0; num <= 1'b0; flag <= 3'd1; end
    else if(tone_en == 1'b0) begin
        cnt_delay <= cnt_delay; end
    else if(chose_down) begin//按键消抖后会输出一个相反的脉冲，不用!chose_up，下面chose_down同理
        case(flag)
            3'd1:   begin flag <= 3'd2;num <= 10'd184; end
            3'd2:   begin flag <= 3'd3;num <= 10'd374; end
            3'd3:   begin flag <= 3'd1;num <= 1'b0; end
            default:begin flag <= 3'd1;num <= 1'b0; end
        endcase
    end
    else if(cnt_delay >= time_delay) begin //自动切换
        cnt_delay <= 1'b0; 
        case(num)
            10'd  0:    begin flag <= 3'd1;num <= num+1'b1; end
            10'd184:    begin flag <= 3'd2;num <= num+1'b1; end
            10'd374:    begin flag <= 3'd3;num <= num+1'b1; end
            10'd609:    begin flag <= 3'd1;num <= 1'b0; end
            default:    begin num <= num+1'b1; end
        endcase
    end
    else begin cnt_delay <= cnt_delay + 1'b1; end
end

always@(posedge rst_n_in) begin//音符表
    //漠河舞厅
    //第一小节
    note[0] = {5'd3};
    note[1] = {5'd6};
    note[2] = {5'd6};
    note[3] = {5'd7};
    note[4] = {5'd8};
    note[5] = {5'd8};
    note[6] = {5'd9};
    note[7] = {5'd10};
    note[8] = {5'd8};
    //第二小节
    note[9] = {5'd10};
    note[10] = {5'd10};
    note[11] = {5'd10};
    note[12] = {5'd12};
    note[13] = {5'd10};
    note[14] = {5'd10};
    note[15] = {5'd0};
    note[16] = {5'd10};
    note[17] = {5'd10};
    //第三小节
    note[18] = {5'd9};
    note[19] = {5'd9};
    note[20] = {5'd9};
    note[21] = {5'd10};
    note[22] = {5'd11};
    note[23] = {5'd11};
    note[24] = {5'd0};
    note[25] = {5'd5};
    //第四小节
    note[26] = {5'd10};
    note[27] = {5'd10};
    note[28] = {5'd10};
    note[29] = {5'd9};
    note[30] = {5'd14};
    note[31] = {5'd7};
    note[32] = {5'd0};
    //第五小节
    note[33] = {5'd6};
    note[34] = {5'd7};
    note[35] = {5'd8};
    note[36] = {5'd9};
    note[37] = {5'd10};
    note[38] = {5'd10};
    note[39] = {5'd8};
    note[40] = {5'd10};
    note[41] = {5'd8};
    //第六小节
    note[42] = {5'd10};
    note[43] = {5'd10};
    note[44] = {5'd10};
    note[45] = {5'd12};
    note[46] = {5'd10};
    note[47] = {5'd10};
    note[48] = {5'd0};
    note[49] = {5'd10};
    note[50] = {5'd10};
    //第七小节
    note[51] = {5'd9};
    note[52] = {5'd9};
    note[53] = {5'd9};
    note[54] = {5'd10};
    note[55] = {5'd11};
    note[56] = {5'd0};
    //第八小节
    note[57] = {5'd5};
    note[58] = {5'd10};
    note[59] = {5'd10};
    note[60] = {5'd9};
    note[61] = {5'd14};
    note[62] = {5'd0};
    //第九小节
    note[63] = {5'd13};
    note[64] = {5'd10};
    note[65] = {5'd6};
    note[66] = {5'd0};
    note[67] = {5'd6};
    note[68] = {5'd12};
    //第十小节
    note[69] = {5'd11};
    note[70] = {5'd10};
    note[71] = {5'd11};
    note[72] = {5'd11};
    note[73] = {5'd0};
    //十一小节
    note[74] = {5'd12};
    note[75] = {5'd9};
    note[76] = {5'd5};
    note[77] = {5'd0};
    note[78] = {5'd5};
    note[79] = {5'd12};
    //十二小节
    note[80] = {5'd10};
    note[81] = {5'd11};
    note[82] = {5'd10};
    note[83] = {5'd11};
    note[84] = {5'd10};
    note[85] = {5'd0};
    //十三小节
    note[86] = {5'd13};
    note[87] = {5'd10};
    note[88] = {5'd6};
    note[89] = {5'd0};
    note[90] = {5'd6};
    note[91] = {5'd12};
    //十四小节
    note[92] = {5'd11};
    note[93] = {5'd10};
    note[94] = {5'd11};
    note[95] = {5'd11};
    note[96] = {5'd0};
    note[97] = {5'd11};
    //十五小节
    note[98] = {5'd10};
    note[99] = {5'd11};
    note[100] = {5'd10};
    note[101] = {5'd11};
    note[102] = {5'd11};
    note[103] = {5'd10};
    note[104] = {5'd11};
    note[105] = {5'd10};
    note[106] = {5'd11};
    //十六小节
    note[107] = {5'd10};
    note[108] = {5'd0};
    note[109] = {5'd0};
    note[110] = {5'd0};
    //十七小节
    note[111] = {5'd5};
    note[112] = {5'd5};
    note[113] = {5'd5};
    note[114] = {5'd6};
    note[115] = {5'd7};
    note[116] = {5'd0};
    note[117] = {5'd3};
    note[118] = {5'd10};
    note[119] = {5'd7};
    //十八小节
    note[120] = {5'd9};
    note[121] = {5'd8};
    note[122] = {5'd8};
    note[123] = {5'd7};
    note[124] = {5'd8};
    note[125] = {5'd0};
    note[126] = {5'd8};
    note[127] = {5'd8};
    note[128] = {5'd8};
    //十九小节
    note[129] = {5'd9};
    note[130] = {5'd5};
    note[131] = {5'd9};
    note[132] = {5'd5};
    note[133] = {5'd9};
    note[134] = {5'd0};
    note[135] = {5'd9};
    note[136] = {5'd9};
    note[137] = {5'd11};
    //二十小节
    note[138] = {5'd11};
    note[139] = {5'd10};
    note[140] = {5'd10};
    note[141] = {5'd9};
    note[142] = {5'd10};
    note[143] = {5'd0};
    note[144] = {5'd10};
    note[145] = {5'd10};
    note[146] = {5'd10};
    //二十一小节
    note[147] = {5'd9};
    note[148] = {5'd9};
    note[149] = {5'd9};
    note[150] = {5'd10};
    note[151] = {5'd11};
    note[152] = {5'd0};
    note[153] = {5'd11};
    note[154] = {5'd11};
    note[155] = {5'd12};
    //二十二小节
    note[156] = {5'd8};
    note[157] = {5'd8};
    note[158] = {5'd8};
    note[159] = {5'd9};
    note[160] = {5'd10};
    note[161] = {5'd10};
    note[162] = {5'd0};
    note[163] = {5'd10};
    note[164] = {5'd10};
    //二十三小节
    note[165] = {5'd9};
    note[166] = {5'd9};
    note[167] = {5'd10};
    note[168] = {5'd10};
    note[169] = {5'd10};
    note[170] = {5'd13};
    note[171] = {5'd10};
    note[172] = {5'd9};
    note[173] = {5'd9};
    note[174] = {5'd8};
    note[175] = {5'd14};
    //二十四小节
    note[176] = {5'd8};
    note[177] = {5'd6};
    note[178] = {5'd0};
    note[179] = {5'd0};
    note[180] = {5'd7};
    note[181] = {5'd8};
    
    //二十五小节,(羞耻的笑话)
    note[182] = {5'd13};
    note[183] = {5'd0};

    //漂洋过海来看你
    note[184] = {5'd9};
    note[185] = {5'd10};
    note[186] = {5'd10};
    note[187] = {5'd10};
    note[188] = {5'd10};
    note[189] = {5'd10};
    note[190] = {5'd9};
    note[191] = {5'd8};
    note[192] = {5'd12};
    note[193] = {5'd10};
    note[194] = {5'd10};
    note[195] = {5'd10};
    note[196] = {5'd9};
    note[197] = {5'd10};
    //第二小节
    note[198] = {5'd9};
    note[199] = {5'd9};
    note[200] = {5'd10};
    note[201] = {5'd9};
    note[202] = {5'd8};
    note[203] = {5'd6};
    note[204] = {5'd6};
    //第三小节
    note[205] = {5'd8};
    note[206] = {5'd8};
    note[207] = {5'd8};
    note[208] = {5'd8};
    note[209] = {5'd9};
    note[210] = {5'd8};
    note[211] = {5'd10};
    note[212] = {5'd10};
    note[213] = {5'd8};
    note[214] = {5'd8};
    note[215] = {5'd8};
    note[216] = {5'd8};
    note[217] = {5'd9};
    note[218] = {5'd8};
    note[219] = {5'd8};
    note[220] = {5'd8};
    //第四小节
    note[221] = {5'd9};
    note[222] = {5'd9};
    note[223] = {5'd9};
    note[224] = {5'd9};
    note[225] = {5'd10};
    note[226] = {5'd9};
    //第五小节
    note[227] = {5'd9};
    note[228] = {5'd10};
    note[229] = {5'd10};
    note[230] = {5'd10};
    note[231] = {5'd10};
    note[232] = {5'd10};
    note[233] = {5'd12};
    note[234] = {5'd12};
    note[235] = {5'd12};
    note[236] = {5'd10};
    //第六小节
    note[237] = {5'd9};
    note[238] = {5'd9};
    note[239] = {5'd10};
    note[240] = {5'd9};
    note[241] = {5'd8};
    note[242] = {5'd6};
    note[243] = {5'd6};
    //第七小节
    note[244] = {5'd8};
    note[245] = {5'd8};
    note[246] = {5'd8};
    note[247] = {5'd8};
    note[248] = {5'd8};
    note[249] = {5'd9};
    note[250] = {5'd10};
    note[251] = {5'd10};
    note[252] = {5'd8};
    note[253] = {5'd8};
    note[254] = {5'd8};
    note[255] = {5'd6};
    note[256] = {5'd9};
    note[257] = {5'd8};
    //8
    note[258] = {5'd9};
    note[259] = {5'd9};
    note[260] = {5'd9};
    note[261] = {5'd9};
    note[262] = {5'd10};
    note[263] = {5'd9};
    note[264] = {5'd0};
    note[265] = {5'd13};
    //9
    note[266] = {5'd13};
    note[267] = {5'd12};
    note[268] = {5'd12};
    note[269] = {5'd12};
    note[270] = {5'd12};
    note[271] = {5'd13};
    note[272] = {5'd13};
    note[273] = {5'd15};
    note[274] = {5'd13};
    note[275] = {5'd12};
    note[276] = {5'd13};
    note[277] = {5'd12};
    note[278] = {5'd8};
    //10
    note[279] = {5'd9};
    note[280] = {5'd9};
    note[281] = {5'd10};
    note[282] = {5'd9};
    note[283] = {5'd10};
    note[284] = {5'd9};
    note[285] = {5'd6};
    note[286] = {5'd6};
    //11
    note[287] = {5'd8};
    note[288] = {5'd8};
    note[289] = {5'd8};
    note[290] = {5'd6};
    note[291] = {5'd9};
    note[292] = {5'd8};
    note[293] = {5'd10};
    note[294] = {5'd10};
    note[295] = {5'd8};
    note[296] = {5'd8};
    note[297] = {5'd8};
    note[298] = {5'd6};
    note[299] = {5'd9};
    note[300] = {5'd8};
    //12
    note[301] = {5'd13};
    note[302] = {5'd13};
    note[303] = {5'd13};
    note[304] = {5'd13};
    note[305] = {5'd10};
    note[306] = {5'd13};
    note[307] = {5'd12};
    //13
    note[308] = {5'd12};
    //14
    note[309] = {5'd12};
    note[310] = {5'd10};
    note[311] = {5'd9};
    note[312] = {5'd10};
    note[313] = {5'd10};
    note[314] = {5'd12};
    note[315] = {5'd10};
    //15
    note[316] = {5'd9};
    note[317] = {5'd9};
    note[318] = {5'd10};
    note[319] = {5'd9};
    note[320] = {5'd6};
    note[321] = {5'd9};
    note[322] = {5'd9};
    //16
    note[323] = {5'd8};
    note[324] = {5'd8};
    note[325] = {5'd8};
    note[326] = {5'd8};
    note[327] = {5'd8};
    note[328] = {5'd6};
    note[329] = {5'd8};
    note[330] = {5'd8};
    note[331] = {5'd8};
    note[332] = {5'd8};
    note[333] = {5'd8};
    note[334] = {5'd8};
    note[335] = {5'd8};
    note[336] = {5'd8};
    note[337] = {5'd6};
    //17
    note[338] = {5'd13};
    note[339] = {5'd12};
    note[340] = {5'd12};
    note[341] = {5'd12};
    note[342] = {5'd12};
    note[343] = {5'd12};
    note[344] = {5'd12};
    note[345] = {5'd10};
    note[346] = {5'd13};
    note[347] = {5'd12};
    note[348] = {5'd12};
    note[349] = {5'd0};
    note[350] = {5'd12};
    //18
    note[351] = {5'd13};
    note[352] = {5'd12};
    note[353] = {5'd13};
    note[354] = {5'd12};
    note[355] = {5'd13};
    note[356] = {5'd0};
    note[357] = {5'd12};
    note[358] = {5'd12};
    note[359] = {5'd10};
    note[360] = {5'd12};
    note[361] = {5'd10};
    note[362] = {5'd12};
    note[363] = {5'd0};
    note[364] = {5'd12};
    note[365] = {5'd12};
    //19
    note[366] = {5'd13};
    note[367] = {5'd13};
    note[368] = {5'd13};
    note[369] = {5'd12};
    note[370] = {5'd13};
    note[371] = {5'd12};
    note[372] = {5'd10};
    note[373] = {5'd10};

    //青花瓷
    note[374] = {5'd0};
    note[375] = {5'd0};
    note[376] = {5'd0};
    note[377] = {5'd19};
    note[378] = {5'd19};
    note[379] = {5'd17};
    note[380] = {5'd16};
    note[381] = {5'd17};
    //2
    note[382] = {5'd16};
    note[383] = {5'd15};
    note[384] = {5'd13};
    note[385] = {5'd16};
    note[386] = {5'd17};
    note[387] = {5'd16};
    note[388] = {5'd15};
    note[389] = {5'd12};
    note[390] = {5'd16};
    note[391] = {5'd17};
    //3
    note[392] = {5'd16};
    note[393] = {5'd15};
    note[394] = {5'd13};
    note[395] = {5'd15};
    note[396] = {5'd16};
    note[397] = {5'd13};
    note[398] = {5'd17};
    note[399] = {5'd15};
    note[400] = {5'd16};
    note[401] = {5'd17};
    note[402] = {5'd19};
    //4
    note[403] = {5'd19};
    note[404] = {5'd17};
    note[405] = {5'd17};
    note[406] = {5'd16};
    note[407] = {5'd15};
    note[408] = {5'd16};
    note[409] = {5'd15};
    note[410] = {5'd13};
    note[411] = {5'd15};
    note[412] = {5'd16};
    note[413] = {5'd17};
    //5
    note[414] = {5'd19};
    note[415] = {5'd0};
    note[416] = {5'd9};
    note[417] = {5'd8};
    note[418] = {5'd6};
    //6
    note[419] = {5'd8};
    note[420] = {5'd8};
    note[421] = {5'd6};
    note[422] = {5'd8};
    note[423] = {5'd8};
    note[424] = {5'd6};
    note[425] = {5'd8};
    note[426] = {5'd6};
    note[427] = {5'd5};
    note[428] = {5'd0};
    note[429] = {5'd9};
    note[430] = {5'd8};
    note[431] = {5'd6};
    //7
    note[432] = {5'd8};
    note[433] = {5'd8};
    note[434] = {5'd6};
    note[435] = {5'd8};
    note[436] = {5'd8};
    note[437] = {5'd10};
    note[438] = {5'd9};
    note[439] = {5'd8};
    note[440] = {5'd8};
    note[441] = {5'd0};
    note[442] = {5'd5};
    note[443] = {5'd6};
    note[444] = {5'd10};
    //8
    note[445] = {5'd10};
    note[446] = {5'd10};
    note[447] = {5'd9};
    note[448] = {5'd10};
    note[449] = {5'd10};
    note[450] = {5'd9};
    note[451] = {5'd10};
    note[452] = {5'd12};
    note[453] = {5'd10};
    note[454] = {5'd10};
    note[455] = {5'd0};
    note[456] = {5'd10};
    note[457] = {5'd10};
    note[458] = {5'd10};
    //9
    note[459] = {5'd9};
    note[460] = {5'd9};
    note[461] = {5'd9};
    note[462] = {5'd9};
    note[463] = {5'd9};
    note[464] = {5'd8};
    note[465] = {5'd10};
    note[466] = {5'd10};
    note[467] = {5'd9};
    note[468] = {5'd0};
    note[469] = {5'd9};
    note[470] = {5'd8};
    note[471] = {5'd6};
    //10
    note[472] = {5'd8};
    note[473] = {5'd8};
    note[474] = {5'd6};
    note[475] = {5'd8};
    note[476] = {5'd8};
    note[477] = {5'd6};
    note[478] = {5'd8};
    note[479] = {5'd6};
    note[480] = {5'd5};
    note[481] = {5'd0};
    note[482] = {5'd5};
    note[483] = {5'd6};
    note[484] = {5'd10};
    //11
    note[485] = {5'd12};
    note[486] = {5'd12};
    note[487] = {5'd10};
    note[488] = {5'd12};
    note[489] = {5'd12};
    note[490] = {5'd10};
    note[491] = {5'd9};
    note[492] = {5'd8};
    note[493] = {5'd8};
    note[494] = {5'd0};
    note[495] = {5'd9};
    note[496] = {5'd8};
    note[497] = {5'd9};
    //12
    note[498] = {5'd10};
    note[499] = {5'd9};
    note[500] = {5'd16};
    note[501] = {5'd15};
    note[502] = {5'd9};
    note[503] = {5'd8};
    note[504] = {5'd6};
    note[505] = {5'd9};
    note[506] = {5'd8};
    note[507] = {5'd8};
    note[508] = {5'd6};
    note[509] = {5'd8};
    note[510] = {5'd8};
    note[511] = {5'd8};
    //13
    note[512] = {5'd8};
    note[513] = {5'd0};
    note[514] = {5'd12};
    note[515] = {5'd12};
    note[516] = {5'd10};
    //14
    note[517] = {5'd9};
    note[518] = {5'd10};
    note[519] = {5'd6};
    note[520] = {5'd9};
    note[521] = {5'd10};
    note[522] = {5'd12};
    note[523] = {5'd10};
    note[524] = {5'd9};
    note[525] = {5'd0};
    note[526] = {5'd12};
    note[527] = {5'd12};
    note[528] = {5'd10};
    //15
    note[529] = {5'd9};
    note[530] = {5'd10};
    note[531] = {5'd5};
    note[532] = {5'd9};
    note[533] = {5'd10};
    note[534] = {5'd12};
    note[535] = {5'd9};
    note[536] = {5'd8};
    note[537] = {5'd0};
    note[538] = {5'd8};
    note[539] = {5'd9};
    note[540] = {5'd10};
    //16
    note[541] = {5'd12};
    note[542] = {5'd13};
    note[543] = {5'd12};
    note[544] = {5'd11};
    note[545] = {5'd12};
    note[546] = {5'd10};
    note[547] = {5'd10};
    note[548] = {5'd9};
    note[549] = {5'd9};
    note[550] = {5'd0};
    note[551] = {5'd8};
    note[552] = {5'd9};
    note[553] = {5'd8};
    //17
    note[554] = {5'd15};
    note[555] = {5'd16};
    note[556] = {5'd8};
    note[557] = {5'd16};
    note[558] = {5'd16};
    note[559] = {5'd10};
    note[560] = {5'd19};
    note[561] = {5'd17};
    note[562] = {5'd10};
    note[563] = {5'd0};
    note[564] = {5'd12};
    note[565] = {5'd12};
    note[566] = {5'd10};
    //18
    note[567] = {5'd9};
    note[568] = {5'd10};
    note[569] = {5'd6};
    note[570] = {5'd9};
    note[571] = {5'd10};
    note[572] = {5'd12};
    note[573] = {5'd10};
    note[574] = {5'd9};
    note[575] = {5'd0};
    note[576] = {5'd12};
    note[577] = {5'd12};
    note[578] = {5'd10};
    //19
    note[579] = {5'd9};
    note[580] = {5'd10};
    note[581] = {5'd5};
    note[582] = {5'd9};
    note[583] = {5'd10};
    note[584] = {5'd12};
    note[585] = {5'd9};
    note[586] = {5'd8};
    note[587] = {5'd0};
    note[588] = {5'd8};
    note[589] = {5'd9};
    note[590] = {5'd10};
    //20
    note[591] = {5'd12};
    note[592] = {5'd13};
    note[593] = {5'd12};
    note[594] = {5'd11};
    note[595] = {5'd12};
    note[596] = {5'd10};
    note[597] = {5'd10};
    note[598] = {5'd9};
    note[599] = {5'd9};
    note[600] = {5'd5};
    note[601] = {5'd10};
    note[602] = {5'd9};
    note[603] = {5'd9};
    //21
    note[604] = {5'd9};
    note[605] = {5'd8};
    note[606] = {5'd8};
    note[607] = {5'd0};
    note[608] = {5'd10};
    note[609] = {5'd12};
    
    
    end

always@(posedge rst_n_in) begin //节拍表
    //漠河舞厅
    //第一小节
    beat[0] = {5'd2};
    beat[1] = {5'd2};
    beat[2] = {5'd2};
    beat[3] = {5'd1};
    beat[4] = {5'd1};
    beat[5] = {5'd2};
    beat[6] = {5'd2};
    beat[7] = {5'd2};
    beat[8] = {5'd2};
    //第二小节
    beat[9] = {5'd2};
    beat[10] = {5'd2};
    beat[11] = {5'd2};
    beat[12] = {5'd1};
    beat[13] = {5'd1};
    beat[14] = {5'd4};
    beat[15] = {5'd2};
    beat[16] = {5'd1};
    beat[17] = {5'd1};
    //第三小节
    beat[18] = {5'd2};
    beat[19] = {5'd2};
    beat[20] = {5'd2};
    beat[21] = {5'd1};
    beat[22] = {5'd1};
    beat[23] = {5'd4};
    beat[24] = {5'd2};
    beat[25] = {5'd2};
    //第四小节
    beat[26] = {5'd2};
    beat[27] = {5'd2};
    beat[28] = {5'd2};
    beat[29] = {5'd1};
    beat[30] = {5'd1};
    beat[31] = {5'd4};
    beat[32] = {5'd4};
    //第五小节
    beat[33] = {5'd2};
    beat[34] = {5'd2};
    beat[35] = {5'd2};
    beat[36] = {5'd1};
    beat[37] = {5'd1};
    beat[38] = {5'd2};
    beat[39] = {5'd2};
    beat[40] = {5'd2};
    beat[41] = {5'd2};
    //第六小节
    beat[42] = {5'd2};
    beat[43] = {5'd2};
    beat[44] = {5'd2};
    beat[45] = {5'd1};
    beat[46] = {5'd1};
    beat[47] = {5'd4};
    beat[48] = {5'd2};
    beat[49] = {5'd1};
    beat[50] = {5'd1};
    //第七小节
    beat[51] = {5'd2};
    beat[52] = {5'd2};
    beat[53] = {5'd2};
    beat[54] = {5'd2};
    beat[55] = {5'd4};
    beat[56] = {5'd4};
    //第八小节
    beat[57] = {5'd2};
    beat[58] = {5'd2};
    beat[59] = {5'd2};
    beat[60] = {5'd2};
    beat[61] = {5'd4};
    beat[62] = {5'd4};
    //第九小节
    beat[63] = {5'd4};
    beat[64] = {5'd2};
    beat[65] = {5'd2};
    beat[66] = {5'd2};
    beat[67] = {5'd2};
    beat[68] = {5'd2};
    //第十小节
    beat[69] = {5'd4};
    beat[70] = {5'd1};
    beat[71] = {5'd1};
    beat[72] = {5'd4};
    beat[73] = {5'd4};
    //十一小节
    beat[74] = {5'd4};
    beat[75] = {5'd2};
    beat[76] = {5'd2};
    beat[77] = {5'd2};
    beat[78] = {5'd2};
    beat[79] = {5'd2};
    //十二小节
    beat[80] = {5'd4};
    beat[81] = {5'd2};
    beat[82] = {5'd2};
    beat[83] = {5'd2};
    beat[84] = {5'd2};
    beat[85] = {5'd2};
    //十三小节
    beat[86] = {5'd4};
    beat[87] = {5'd2};
    beat[88] = {5'd2};
    beat[89] = {5'd2};
    beat[90] = {5'd2};
    beat[91] = {5'd2};
    //十四小节
    beat[92] = {5'd4};
    beat[93] = {5'd2};
    beat[94] = {5'd2};
    beat[95] = {5'd4};
    beat[96] = {5'd2};
    beat[97] = {5'd2};
    //十五小节
    beat[98] = {5'd2};
    beat[99] = {5'd2};
    beat[100] = {5'd1};
    beat[101] = {5'd2};
    beat[102] = {5'd1};
    beat[103] = {5'd2};
    beat[104] = {5'd2};
    beat[105] = {5'd2};
    beat[106] = {5'd2};
    //十六小节
    beat[107] = {5'd6};
    beat[108] = {5'd0};//有问题
    beat[109] = {5'd0};//有问题
    beat[110] = {5'd4};
    //十七小节
    beat[111] = {5'd2};
    beat[112] = {5'd2};
    beat[113] = {5'd2};
    beat[114] = {5'd1};
    beat[115] = {5'd1};
    beat[116] = {5'd2};
    beat[117] = {5'd2};
    beat[118] = {5'd2};
    beat[119] = {5'd2};
    //十八小节
    beat[120] = {5'd2};
    beat[121] = {5'd2};
    beat[122] = {5'd2};
    beat[123] = {5'd1};
    beat[124] = {5'd1};
    beat[125] = {5'd2};
    beat[126] = {5'd2};
    beat[127] = {5'd2};
    beat[128] = {5'd2};
    //十九小节
    beat[129] = {5'd2};
    beat[130] = {5'd2};
    beat[131] = {5'd2};
    beat[132] = {5'd1};
    beat[133] = {5'd1};
    beat[134] = {5'd2};
    beat[135] = {5'd2};
    beat[136] = {5'd2};
    beat[137] = {5'd2};
    //二十小节
    beat[138] = {5'd2};
    beat[139] = {5'd2};
    beat[140] = {5'd2};
    beat[141] = {5'd1};
    beat[142] = {5'd1};
    beat[143] = {5'd2};
    beat[144] = {5'd2};
    beat[145] = {5'd2};
    beat[146] = {5'd2};
    //二十一小节
    beat[147] = {5'd2};
    beat[148] = {5'd2};
    beat[149] = {5'd2};
    beat[150] = {5'd1};
    beat[151] = {5'd1};
    beat[152] = {5'd2};
    beat[153] = {5'd2};
    beat[154] = {5'd2};
    beat[155] = {5'd2};
    //二十二小节
    beat[156] = {5'd2};
    beat[157] = {5'd2};
    beat[158] = {5'd1};
    beat[159] = {5'd2};
    beat[160] = {5'd1};
    beat[161] = {5'd2};
    beat[162] = {5'd2};
    beat[163] = {5'd1};
    beat[164] = {5'd1};
    //二十三小节
    beat[165] = {5'd2};
    beat[166] = {5'd1};
    beat[167] = {5'd1};
    beat[168] = {5'd2};
    beat[169] = {5'd2};
    beat[170] = {5'd2};
    beat[171] = {5'd1};
    beat[172] = {5'd1};
    beat[173] = {5'd2};
    beat[174] = {5'd1};
    beat[175] = {5'd1};
    //二十四小节
    beat[176] = {5'd2};
    beat[177] = {5'd2};
    beat[178] = {5'd4};
    beat[179] = {5'd4};
    beat[180] = {5'd1};
    beat[181] = {5'd2};
    
    //二十五小节,(羞耻的笑话)
    beat[182] = {5'd4};
    beat[183] = {5'd6};

    //漂洋过海来看你
    beat[184] = {5'd1};
    beat[185] = {5'd1};
    beat[186] = {5'd1};
    beat[187] = {5'd1};
    beat[188] = {5'd1};
    beat[189] = {5'd1};
    beat[190] = {5'd1};
    beat[191] = {5'd1};
    beat[192] = {5'd1};
    beat[193] = {5'd2};
    beat[194] = {5'd1};
    beat[195] = {5'd2};
    beat[196] = {5'd1};
    beat[197] = {5'd1};
    //第二小节
    beat[198] = {5'd1};
    beat[199] = {5'd2};
    beat[200] = {5'd1};
    beat[201] = {5'd2};
    beat[202] = {5'd1};
    beat[203] = {5'd1};
    beat[204] = {5'd4};
    //第三小节
    beat[205] = {5'd1};
    beat[206] = {5'd1};
    beat[207] = {5'd1};
    beat[208] = {5'd1};
    beat[209] = {5'd1};
    beat[210] = {5'd2};
    beat[211] = {5'd1};
    beat[212] = {5'd1};
    beat[213] = {5'd1};
    beat[214] = {5'd1};
    beat[215] = {5'd1};
    beat[216] = {5'd1};
    beat[217] = {5'd1};
    beat[218] = {5'd1};
    beat[219] = {5'd1};
    beat[220] = {5'd1};
    //第四小节
    beat[221] = {5'd2};
    beat[222] = {5'd1};
    beat[223] = {5'd2};
    beat[224] = {5'd1};
    beat[225] = {5'd1};
    beat[226] = {5'd4};
    //第五小节
    beat[227] = {5'd1};
    beat[228] = {5'd1};
    beat[229] = {5'd1};
    beat[230] = {5'd1};
    beat[231] = {5'd1};
    beat[232] = {5'd2};
    beat[233] = {5'd1};
    beat[234] = {5'd1};
    beat[235] = {5'd2};
    beat[236] = {5'd1};
    //第六小节
    beat[237] = {5'd2};
    beat[238] = {5'd1};
    beat[239] = {5'd1};
    beat[240] = {5'd2};
    beat[241] = {5'd1};
    beat[242] = {5'd1};
    beat[243] = {5'd4};
    //第七小节
    beat[244] = {5'd1};
    beat[245] = {5'd1};
    beat[246] = {5'd1};
    beat[247] = {5'd1};
    beat[248] = {5'd1};
    beat[249] = {5'd2};
    beat[250] = {5'd1};
    beat[251] = {5'd1};
    beat[252] = {5'd1};
    beat[253] = {5'd1};
    beat[254] = {5'd1};
    beat[255] = {5'd1};
    beat[256] = {5'd1};
    beat[257] = {5'd4};
    //8
    beat[258] = {5'd2};
    beat[259] = {5'd1};
    beat[260] = {5'd2};
    beat[261] = {5'd1};
    beat[262] = {5'd1};
    beat[263] = {5'd4};
    beat[264] = {5'd2};
    beat[265] = {5'd1};
    //9
    beat[266] = {5'd1};
    beat[267] = {5'd2};
    beat[268] = {5'd1};
    beat[269] = {5'd2};
    beat[270] = {5'd1};
    beat[271] = {5'd1};
    beat[272] = {5'd1};
    beat[273] = {5'd2};
    beat[274] = {5'd1};
    beat[275] = {5'd1};
    beat[276] = {5'd1};
    beat[277] = {5'd1};
    beat[278] = {5'd1};
    //10
    beat[279] = {5'd2};
    beat[280] = {5'd1};
    beat[281] = {5'd1};
    beat[282] = {5'd1};
    beat[283] = {5'd1};
    beat[284] = {5'd1};
    beat[285] = {5'd1};
    beat[286] = {5'd4};
    //11
    beat[287] = {5'd1};
    beat[288] = {5'd1};
    beat[289] = {5'd1};
    beat[290] = {5'd1};
    beat[291] = {5'd1};
    beat[292] = {5'd2};
    beat[293] = {5'd1};
    beat[294] = {5'd1};
    beat[295] = {5'd1};
    beat[296] = {5'd1};
    beat[297] = {5'd1};
    beat[298] = {5'd1};
    beat[299] = {5'd1};
    beat[300] = {5'd2};
    //12
    beat[301] = {5'd2};
    beat[302] = {5'd1};
    beat[303] = {5'd1};
    beat[304] = {5'd2};
    beat[305] = {5'd1};
    beat[306] = {5'd1};
    beat[307] = {5'd4};
    //13
    beat[308] = {5'd6};
    //14
    beat[309] = {5'd1};
    beat[310] = {5'd1};
    beat[311] = {5'd1};
    beat[312] = {5'd1};
    beat[313] = {5'd1};
    beat[314] = {5'd2};
    beat[315] = {5'd4};
    //15
    beat[316] = {5'd1};
    beat[317] = {5'd2};
    beat[318] = {5'd1};
    beat[319] = {5'd2};
    beat[320] = {5'd1};
    beat[321] = {5'd1};
    beat[322] = {5'd4};
    //16
    beat[323] = {5'd1};
    beat[324] = {5'd1};
    beat[325] = {5'd1};
    beat[326] = {5'd1};
    beat[327] = {5'd1};
    beat[328] = {5'd2};
    beat[329] = {5'd1};
    beat[330] = {5'd1};
    beat[331] = {5'd1};
    beat[332] = {5'd1};
    beat[333] = {5'd1};
    beat[334] = {5'd1};
    beat[335] = {5'd1};
    beat[336] = {5'd1};
    beat[337] = {5'd1};
    //17
    beat[338] = {5'd1};
    beat[339] = {5'd1};
    beat[340] = {5'd1};
    beat[341] = {5'd1};
    beat[342] = {5'd1};
    beat[343] = {5'd1};
    beat[344] = {5'd1};
    beat[345] = {5'd1};
    beat[346] = {5'd2};
    beat[347] = {5'd1};
    beat[348] = {5'd2};
    beat[349] = {5'd1};
    beat[350] = {5'd1};
    //18
    beat[351] = {5'd1};
    beat[352] = {5'd1};
    beat[353] = {5'd1};
    beat[354] = {5'd1};
    beat[355] = {5'd2};
    beat[356] = {5'd1};
    beat[357] = {5'd1};
    beat[358] = {5'd1};
    beat[359] = {5'd1};
    beat[360] = {5'd1};
    beat[361] = {5'd1};
    beat[362] = {5'd1};
    beat[363] = {5'd1};
    beat[364] = {5'd1};
    beat[365] = {5'd1};
    //19
    beat[366] = {5'd2};
    beat[367] = {5'd1};
    beat[368] = {5'd1};
    beat[369] = {5'd1};
    beat[370] = {5'd1};
    beat[371] = {5'd1};
    beat[372] = {5'd1};
    beat[373] = {5'd4};
    //青花瓷
    beat[374] = {5'd2};
    beat[375] = {5'd2};
    beat[376] = {5'd2};
    beat[377] = {5'd1};
    beat[378] = {5'd1};
    beat[379] = {5'd1};
    beat[380] = {5'd1};
    beat[381] = {5'd1};
    //2
    beat[382] = {5'd1};
    beat[383] = {5'd1};
    beat[384] = {5'd4};
    beat[385] = {5'd1};
    beat[386] = {5'd1};
    beat[387] = {5'd1};
    beat[388] = {5'd1};
    beat[389] = {5'd4};
    beat[390] = {5'd1};
    beat[391] = {5'd1};
    //3
    beat[392] = {5'd1};
    beat[393] = {5'd1};
    beat[394] = {5'd2};
    beat[395] = {5'd1};
    beat[396] = {5'd2};
    beat[397] = {5'd1};
    beat[398] = {5'd4};
    beat[399] = {5'd1};
    beat[400] = {5'd1};
    beat[401] = {5'd1};
    beat[402] = {5'd1};
    //4
    beat[403] = {5'd1};
    beat[404] = {5'd1};
    beat[405] = {5'd2};
    beat[406] = {5'd2};
    beat[407] = {5'd2};
    beat[408] = {5'd1};
    beat[409] = {5'd1};
    beat[410] = {5'd2};
    beat[411] = {5'd1};
    beat[412] = {5'd1};
    beat[413] = {5'd2};
    //5
    beat[414] = {5'd6};
    beat[415] = {5'd1};
    beat[416] = {5'd1};
    beat[417] = {5'd1};
    beat[418] = {5'd1};
    //6
    beat[419] = {5'd2};
    beat[420] = {5'd1};
    beat[421] = {5'd1};
    beat[422] = {5'd2};
    beat[423] = {5'd1};
    beat[424] = {5'd1};
    beat[425] = {5'd1};
    beat[426] = {5'd1};
    beat[427] = {5'd2};
    beat[428] = {5'd1};
    beat[429] = {5'd1};
    beat[430] = {5'd1};
    beat[431] = {5'd1};
    //7
    beat[432] = {5'd2};
    beat[433] = {5'd1};
    beat[434] = {5'd1};
    beat[435] = {5'd2};
    beat[436] = {5'd1};
    beat[437] = {5'd1};
    beat[438] = {5'd1};
    beat[439] = {5'd1};
    beat[440] = {5'd2};
    beat[441] = {5'd1};
    beat[442] = {5'd1};
    beat[443] = {5'd1};
    beat[444] = {5'd1};
    //8
    beat[445] = {5'd2};
    beat[446] = {5'd1};
    beat[447] = {5'd1};
    beat[448] = {5'd2};
    beat[449] = {5'd1};
    beat[450] = {5'd1};
    beat[451] = {5'd1};
    beat[452] = {5'd1};
    beat[453] = {5'd1};
    beat[454] = {5'd1};
    beat[455] = {5'd1};
    beat[456] = {5'd1};
    beat[457] = {5'd1};
    beat[458] = {5'd1};
    //9
    beat[459] = {5'd1};
    beat[460] = {5'd1};
    beat[461] = {5'd1};
    beat[462] = {5'd1};
    beat[463] = {5'd2};
    beat[464] = {5'd1};
    beat[465] = {5'd1};
    beat[466] = {5'd1};
    beat[467] = {5'd2};
    beat[468] = {5'd1};
    beat[469] = {5'd1};
    beat[470] = {5'd1};
    beat[471] = {5'd1};
    //10
    beat[472] = {5'd2};
    beat[473] = {5'd1};
    beat[474] = {5'd1};
    beat[475] = {5'd2};
    beat[476] = {5'd1};
    beat[477] = {5'd1};
    beat[478] = {5'd1};
    beat[479] = {5'd1};
    beat[480] = {5'd1};
    beat[481] = {5'd1};
    beat[482] = {5'd1};
    beat[483] = {5'd1};
    beat[484] = {5'd1};
    //11
    beat[485] = {5'd2};
    beat[486] = {5'd1};
    beat[487] = {5'd1};
    beat[488] = {5'd2};
    beat[489] = {5'd1};
    beat[490] = {5'd1};
    beat[491] = {5'd1};
    beat[492] = {5'd1};
    beat[493] = {5'd2};
    beat[494] = {5'd1};
    beat[495] = {5'd1};
    beat[496] = {5'd1};
    beat[497] = {5'd1};
    //12
    beat[498] = {5'd1};
    beat[499] = {5'd1};
    beat[500] = {5'd1};
    beat[501] = {5'd1};
    beat[502] = {5'd2};
    beat[503] = {5'd1};
    beat[504] = {5'd1};
    beat[505] = {5'd1};
    beat[506] = {5'd1};
    beat[507] = {5'd1};
    beat[508] = {5'd1};
    beat[509] = {5'd2};
    beat[510] = {5'd1};
    beat[511] = {5'd1};
    //13
    beat[512] = {5'd12};
    beat[513] = {5'd2};
    beat[514] = {5'd2};
    beat[515] = {5'd2};
    beat[516] = {5'd2};
    //14
    beat[517] = {5'd2};
    beat[518] = {5'd2};
    beat[519] = {5'd2};
    beat[520] = {5'd2};
    beat[521] = {5'd2};
    beat[522] = {5'd2};
    beat[523] = {5'd2};
    beat[524] = {5'd4};
    beat[525] = {5'd2};
    beat[526] = {5'd2};
    beat[527] = {5'd2};
    beat[528] = {5'd2};
    //15
    beat[529] = {5'd2};
    beat[530] = {5'd2};
    beat[531] = {5'd2};
    beat[532] = {5'd2};
    beat[533] = {5'd2};
    beat[534] = {5'd2};
    beat[535] = {5'd2};
    beat[536] = {5'd4};
    beat[537] = {5'd2};
    beat[538] = {5'd2};
    beat[539] = {5'd2};
    beat[540] = {5'd2};
    //16
    beat[541] = {5'd1};
    beat[542] = {5'd1};
    beat[543] = {5'd1};
    beat[544] = {5'd1};
    beat[545] = {5'd1};
    beat[546] = {5'd1};
    beat[547] = {5'd1};
    beat[548] = {5'd1};
    beat[549] = {5'd4};
    beat[550] = {5'd1};
    beat[551] = {5'd1};
    beat[552] = {5'd1};
    beat[553] = {5'd1};
    //17
    beat[554] = {5'd1};
    beat[555] = {5'd1};
    beat[556] = {5'd1};
    beat[557] = {5'd1};
    beat[558] = {5'd1};
    beat[559] = {5'd2};
    beat[560] = {5'd1};
    beat[561] = {5'd1};
    beat[562] = {5'd2};
    beat[563] = {5'd1};
    beat[564] = {5'd1};
    beat[565] = {5'd1};
    beat[566] = {5'd1};
    //18
    beat[567] = {5'd1};
    beat[568] = {5'd1};
    beat[569] = {5'd2};
    beat[570] = {5'd1};
    beat[571] = {5'd1};
    beat[572] = {5'd1};
    beat[573] = {5'd1};
    beat[574] = {5'd4};
    beat[575] = {5'd1};
    beat[576] = {5'd1};
    beat[577] = {5'd1};
    beat[578] = {5'd1};
    //19
    beat[579] = {5'd1};
    beat[580] = {5'd1};
    beat[581] = {5'd2};
    beat[582] = {5'd1};
    beat[583] = {5'd1};
    beat[584] = {5'd1};
    beat[585] = {5'd1};
    beat[586] = {5'd4};
    beat[587] = {5'd1};
    beat[588] = {5'd1};
    beat[589] = {5'd1};
    beat[590] = {5'd1};
    //20
    beat[591] = {5'd1};
    beat[592] = {5'd1};
    beat[593] = {5'd1};
    beat[594] = {5'd1};
    beat[595] = {5'd1};
    beat[596] = {5'd1};
    beat[597] = {5'd1};
    beat[598] = {5'd1};
    beat[599] = {5'd2};
    beat[600] = {5'd1};
    beat[601] = {5'd2};
    beat[602] = {5'd1};
    beat[603] = {5'd1};
    //21
    beat[604] = {5'd1};
    beat[605] = {5'd2};
    beat[606] = {5'd4};
    beat[607] = {5'd2};
    beat[608] = {5'd1};
    beat[609] = {5'd1};
    end
endmodule